package com.zhenai.rocyuan.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Locale;

public class MacUtil {
	
	  
	  
	/**  
	 * 获取MAC地址  
	 * @author sunlightcs  
	 *  
	 */  
	
	      /**   
	       *  获取当前操作系统名称.   
	       *  return 操作系统名称 例如:windows,Linux,Unix等.   
	      */     
	     public static String getOSName() {     
	         return System.getProperty("os.name").toLowerCase();     
	     }     
	              
	     /**   
	       * 获取Unix网卡的mac地址.   
	      * @return mac地址   
	      */     
	     public static String getUnixMACAddress() {     
	         String mac = null;     
	         BufferedReader bufferedReader = null;     
	         Process process = null;     
	         try {     
	               /**  
	                *  Unix下的命令，一般取eth0作为本地主网卡 显示信息中包含有mac地址信息    
	                */  
	             process = Runtime.getRuntime().exec("ifconfig eth0");   
	             bufferedReader = new BufferedReader(new InputStreamReader(process     
	                     .getInputStream()));     
	             String line = null;     
	             int index = -1;     
	             while ((line = bufferedReader.readLine()) != null) {     
	                    /**  
	                     *  寻找标示字符串[hwaddr]   
	                     */  
	                 index = line.toLowerCase().indexOf("hwaddr");    
	                    /**  
	                     * 找到了  
	                     */  
	                 if (index != -1) {     
	                        /**  
	                         *   取出mac地址并去除2边空格    
	                         */  
	                     mac = line.substring(index +"hwaddr".length()+ 1).trim();   
	                     break;     
	                 }     
	             }     
	         } catch (IOException e) {     
	             e.printStackTrace();     
	         } finally {     
	             try {     
	                 if (bufferedReader != null) {     
	                     bufferedReader.close();     
	                 }     
	             } catch (IOException e1) {     
	                e1.printStackTrace();     
	            }     
	             bufferedReader = null;     
	             process = null;     
	         }     
	      
	         return mac;     
	     }     
	          
	            
	            
	         /**   
	           * 获取Linux网卡的mac地址.   
	          * @return mac地址   
	          */     
	         public static String getLinuxMACAddress() {     
	             String mac = null;     
	             BufferedReader bufferedReader = null;     
	             Process process = null;     
	             try {     
	                   /**  
	                    *  linux下的命令，一般取eth0作为本地主网卡 显示信息中包含有mac地址信息    
	                    */  
	                 process = Runtime.getRuntime().exec("ifconfig eth0");   
	                 bufferedReader = new BufferedReader(new InputStreamReader(process     
	                         .getInputStream()));     
	                 String line = null;     
	                 int index = -1;     
	                 while ((line = bufferedReader.readLine()) != null) {     
	                     index = line.toLowerCase().indexOf("硬件地址");    
	                        /**  
	                         * 找到了  
	                         */  
	                     if (index != -1) {     
	                            /**  
	                             *   取出mac地址并去除2边空格    
	                             */  
	                         mac = line.substring(index+4).trim();   
	                         break;     
	                     }     
	                 }     
	             } catch (IOException e) {     
	                 e.printStackTrace();     
	             } finally {     
	                 try {     
	                     if (bufferedReader != null) {     
	                         bufferedReader.close();     
	                     }     
	                 } catch (IOException e1) {     
	                    e1.printStackTrace();     
	                }     
	                 bufferedReader = null;     
	                 process = null;     
	             }   
	          
	             return mac;     
	         }   
	            
	         /**   
	          * 获取widnows网卡的mac地址.   
	          * @return mac地址   
	          */     
	         public static String getWindowsMACAddress() {     
	             String mac = null;     
	             BufferedReader bufferedReader = null;     
	             Process process = null;     
	             try {     
	                   /**  
	                    * windows下的命令，显示信息中包含有mac地址信息    
	                    * 解决返回流中的乱码问题 .getInputStream(),"gbk"
	                    */  
	                 process = Runtime.getRuntime().exec("ipconfig /all");   
	                 bufferedReader = new BufferedReader(new InputStreamReader(process     
	                         .getInputStream(),"gbk"));     
	                 String line = null;     
	                 int index = -1;     
	                 while ((line = bufferedReader.readLine()) != null) {     
	                        /**  
	                         *  寻找标示字符串[physical address]   
	                         */  
	                
	                	 System.out.println(line);
	                	 Locale locale = Locale.getDefault();
	                	 if("zh".equals(locale.getLanguage())){
	                		 index = line.indexOf("物理地址");
	                	 }else{
	                	     index = line.toLowerCase().indexOf("physical address");   
	                	 }
	                 
	                     if (index != -1) {   
	                         index = line.indexOf(":");   
	                         if (index != -1) {   
	                                /**  
	                                 *   取出mac地址并去除2边空格  
	                                 */  
	                            mac = line.substring(index + 1).trim();    
	                        }   
	                         break;     
	                     }   
	                 }   
	             } catch (IOException e) {     
	                 e.printStackTrace();     
	             }finally {     
	                 try {     
	                     if (bufferedReader != null) {     
	                         bufferedReader.close();     
	                       }     
	                 }catch (IOException e1) {     
	                     e1.printStackTrace();     
	                   }     
	                 bufferedReader = null;     
	                 process = null;     
	             }     
	          
	             return mac;     
	         }     
	          
	         /**   
	          * 测试用的main方法.   
	          *    
	          * @param argc   
	         *            运行参数.   
	          */     
	         public static void main(String[] argc) {     
	        	 
	        	 Locale locale = Locale.getDefault();
	        	 System.out.println(locale.getLanguage());
	        	 System.out.println(locale.getCountry());
	        	 
	             String os = getOSName();     
	             System.out.println(os);     
	             if(os.startsWith("windows")){     
	                 String mac = getWindowsMACAddress();     
	                 System.out.println("本地是windows:"+mac);     
	             }else if(os.startsWith("linux")){     
	                   String mac = getLinuxMACAddress();     
	                 System.out.println("本地是Linux系统,MAC地址是:"+mac);   
	             }else{     
	                 String mac = getUnixMACAddress();                         
	                 System.out.println("本地是Unix系统 MAC地址是:"+mac);   
	             }     
	         }     
	  
	}  


